package model

import (
	"go-movies/db"
)

type MovieInfo struct {
	Id int 	`json:"id"`
	Url string `gorm:"size:200" json:"url"`        // 电影的实际播放地址
	MovieId string `gorm:"size:20" json:"movie_id"`     // 电影ID
	MovieName string `gorm:"size:100" json:"movie_name"`  // 电泳名称
	MovieCover string `gorm:"size:200" json:"movie_cover"` // 电影封面
	MovieDirector string `gorm:"size:50" json:"movie_director"` // 电影导演
	MovieWriter string `gorm:"size:200" json:"movie_writer"`  // 电影编剧，可能有多个，所以空间大些
	MovieMainCharacter string `gorm:"size:200" json:"movie_main_character"`  // 电影主演
	MovieType string `gorm:"size:100" json:"movie_type"`    // 电影类型
	MovieCountry string `gorm:"size:50" json:"movie_country"`  // 电影国家
	MovieOnTime  string `gorm:"size:50" json:"movie_on_time"`  // 上映时间
	MovieDesc string `gorm:"type:text;"json:"movie_desc"`
	BaseModel
}

// 分页获取电影数据
func GetMovie(limit, offset int) ([]MovieInfo, int, bool) {
	var movies = make([]MovieInfo, limit)
	db := db.GetConn()
	// 加快查询速度，这里做个傻瓜操作
	var count = 61421
	db.Model(&MovieInfo{}).Select("id, url, movie_id, movie_name, movie_cover, movie_main_character, movie_type, movie_country, movie_on_time").Limit(limit).Offset(offset).Find(&movies)
	if db.Error != nil {
		return []MovieInfo{}, 0, false
	}
	return movies, count, true
}

// 根据某种条件分页获取电影数据:
func GetTypeMovie(key, value string, limit, offset int) ([]MovieInfo, int,  bool) {
	var movies = make([]MovieInfo, limit)
	//自定义模糊查询:
	db := db.GetConn()
	var count int
	db.Model(&MovieInfo{}).Select("id, url, movie_id, movie_name, movie_cover, movie_main_character, movie_type, movie_country, movie_on_time").Where(key + ` like ?`, "%" + value + "%").Count(&count).Limit(limit).Offset(offset).Find(&movies)
	if db.Error != nil {
		return []MovieInfo{}, 0, false
	}
	return movies, count, true
}

// 收藏电影: 存在问题
func CollectionMovie(id int, username string)(bool){
	movie := MovieInfo{}
	db := db.GetConn()
	db.Where("id = ?", id).First(&movie)
	var user User
	db.Where("username = ?", username)
	db.Model(&user).Preload("LikeMovie").Find(&user)
	movies := user.LikeMovie
	movies = append(movies, movie)
	db.Model(&user).Update("like_movie", movies)
	if db.Error != nil {
		return false
	}
	return true
}

// 获取电影详情;
func GetMovieInfo(id int) (MovieInfo, bool) {
	var movie MovieInfo
	db := db.GetConn()
	db.Where("id = ?", id).Find(&movie)
	if db.Error != nil {
		return MovieInfo{}, false
	}
	return movie, true
}